Autonomic learning method to load balance output transfers of two peer nodes

ABSTRACT

Disclosed are a system, a method, and a computer program product to provide for the optimization of the output transfer load balance between the peer computers transferring data to one or more storage devices. The peer computers receive, organize and transfer the data to storage devices. The data set is composed of a plurality of data transfers. After an initial division of the data transfers between the two peers, each peer will have assigned responsibility for a number of data transfers. If the one of the peer computers completes offloading transactions earlier than the other peer, then the peer that is still transferring data will employ the other peer to execute a portion of the remaining data transfers. The operation of the system is symmetrical in that either peer may assist the other peer depending upon which peer has idle time. In addition the operation is autonomous and self-adjusting resulting in the peer nodes optimizing the size of the portion of data transfers that are reassigned during the operation of the invention resulting in the minimization of idle time for either peer. The self-adjusting feature allows the system to react to changing conditions that affect data transfer rates to the storage devices.

TECHNICAL FIELD

This invention concerns a system to maintain an optimized balance ofoutbound transfers between two peer nodes that are transferring data toone or more storage devices.

CROSS-REFERENCES TO RELATED APPLICATIONS

The present application is related to application Ser. No. 10/618,242,entitled “Autonomic Link Optimization Through Elimination of UnnecessaryTransfers”, and to application Ser. No. 10/618,400, entitled “AutonomicPredictive Load Balancing of Output Transfers for Two Peer Computers forData Storage Applications”, both filed on an even date herewith, thedisclosures of which are hereby incorporated by reference in theirentirety.

BACKGROUND OF THE INVENTION

Data storage systems may maintain more than one copy of data to protectagainst losing the data in the event of a failure of any of the datastorage components. A secondary copy of data at a remote site istypically used in the event of a failure at the primary site. Secondarycopies of the current data contained in the primary site are typicallymade as the application system is writing new data to a primary site. Insome data storage systems the secondary site may contain two or morepeer computers operating together as a backup appliance to store thedata in one or more storage devices. Each peer computer receives inbounddata from the primary site and transfers the data to a storagecontroller, storage device(s), or other computers for backup storage ofthe data. This type of system could be used for a disaster recoverysolution where a primary storage controller sends data to a backupappliance that, in turn, offloads the transfers to a secondary storagecontroller at a remote site. In such backup systems, data is typicallymaintained in volume pairs. A volume pair is comprised of a volume in aprimary storage device and a corresponding volume in a secondary storagedevice that includes an identical copy of the data maintained in theprimary volume. Typically, the primary volume of the pair will bemaintained in a primary direct access storage device (DASD) and thesecondary volume of the pair is maintained in a secondary DASD shadowingthe data on the primary DASD. A primary storage controller may beprovided to control access to the primary storage and a secondarystorage controller may be provided to control access to the secondarystorage.

The backup appliance maintains consistent transaction sets, whereinapplication of all the transactions to the secondary device creates apoint-in-time consistency between the primary and secondary devices. Foreach consistent transaction set, there will be one data structurecreated that will contain information on all outbound transfers in theset. This structure will be maintained on both of the peer nodes of thebackup appliance. The backup appliance will maintain consistenttransactions sets while offloading the transactions sets to thesecondary device asynchronously. Both peer nodes in the backup appliancemay transfer the data to any of the storage devices. To obtain theshortest transfer time it is necessary to divide the data transfersbetween the peers. An equal division of the data transfers between thetwo peers may not be optimal because the latency time to transfer datato a particular storage device may be different for each peer. This mayresult in the first peer finishing before the second peer, resulting inidle time for the first peer. In the case where the first peer finishesoffloading transactions earlier than the second peer, it may bebeneficial for the first peer node to assist the second peer node tocomplete the remaining transactions. In addition, the peer nodes shouldadjust the division of data transfers between the peers to minimize idletime at either peer for the present and future consistent transactionsets.

Prior art systems distribute data movement tasks among multiple queueprocessors that each have access to a common queue of tasks to execute.Each of the queue processors has a queue of its own work and is able toaccess each of the other queue processor's queue to submit tasks. Thisforms a tightly coupled system where every queue processor in the systemcan access the other queue processor's tasks. Tasks are submittedwithout any knowledge of the impact on the overall system operation. Incertain situations it may not be beneficial to transfer tasks because ofoverhead costs that may affect the overall system operation. Theoverhead costs may result in a longer time to complete the task than ifthe task had not been transferred. In addition the prior art systems donot optimize the operation of the system by adjusting the size of thetasks to transfer. Adjustment of the size of the tasks to transfer isimportant to react to changing operating conditions that affect the timeto transfer data to the storage devices.

There is a need to divide the data transfers between two peer computersto achieve an optimal minimum transfer time to transfer all of the datain a data set and to adjust the division of data transfers to react tovarying conditions.

SUMMARY OF THE INVENTION

It is an object of the present invention to provide a method to sharethe transfer load between two peer computers transferring data tostorage devices. Disclosed are a system, a method, and a computerprogram product to provide for the optimization of the output transferload balance between two peer computers transferring data to one or morestorage devices. The peer computers receive, organize and transfer thedata to storage devices. The data set received may be a consistenttransactions set or other type of data set for storage on one or morestorage devices. The data set is composed of a plurality of datatransfers. Each data transfer is an equal size block of data. The numberof data transfers may vary for each data set received. The datatransfers are initially divided between the two peer computers resultingin each peer having responsibility for a number of data transfers. Eachof the peer computers receives all of the data transfers in the set, sothat each peer has access to the entire set of data. The presentinvention operates by managing the assignments of data transfers foreach peer computer and no data is transferred between the peers as theassignments change.

After the initial division of the data transfers between the two peers,each peer will have assigned responsibility for a number of datatransfers. If the one of the peer computers completes offloadingtransactions earlier than the other peer, then the peer that is stilltransferring data will employ the other peer to execute a portion of theremaining data transfers. The peer computers communicate with each otherto determine if it is necessary for either peer to assist the other withdata transfers. If the first peer is idle after completing datatransfers it sends a messages to the other peer to offer assistance. Thesecond peer receives the message and compares the number of transfersthat remain to a threshold to determine if it is efficient to requestassistance from the first peer. If it is not efficient for the firstpeer to assist because of the overhead associated with reassigning thedata transfers, then the second peer responds with a “no assistanceneeded message”. If it is efficient for the first peer to assist, then aportion of the remaining data transfers are reassigned to the firstpeer. The operation of the system is symmetrical in that either peer mayassist the other peer depending upon which peer has idle time. Inaddition the operation is autonomous and self-adjusting resulting in thepeer nodes optimizing the size of the portion of data transfers that arereassigned during the operation of the invention resulting in theminimization of idle time for either peer. The self-adjusting featureallows the system to react to changing conditions that affect datatransfer rates to the storage devices.

For a more complete understanding of the present invention, referenceshould be made to the following detailed description taken inconjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagrammatic representation of a data storage networkwith primary and secondary sites.

FIG. 2 is a block diagrammatic representation of a portion of thecomponents located at the primary and secondary sites.

FIG. 3 is a flowchart of the method used to balance the data transferload of two peer computers.

FIG. 4 is a flowchart of the method used to determine if a second peerneeds assistance to transfer data to storage devices.

FIG. 5 is a flowchart of the method used to determine if a first peerneeds assistance to transfer data to storage devices.

FIG. 6 is a flowchart of the method used to determine the first andsecond peer ratios when the second peer computer needs assistance.

FIG. 7 is a flowchart of the method used to determine the first andsecond peer ratios when the first peer computer needs assistance.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

This invention is described in preferred embodiments in the followingdescription. The preferred embodiments are described with reference tothe Figures. While this invention is described in conjunction with thepreferred embodiments, it will be appreciated by those skilled in theart that it is intended to cover alternatives, modifications, andequivalents as may be included within the spirit and scope of theinvention as defined by the appended claims.

Data storage systems may maintain more than one copy of data atsecondary data storage sites to protect against losing the data in theevent of a failure of any of the data storage components at the primarysite. FIG. 1 shows a block diagram of a data storage system with aprimary site 110 and secondary site 150. Primary site 110 and secondarysite 150 are data storage sites that may be separated by a physicaldistance, or the sites may be located in close proximity to each other.Both the primary site 110 and secondary site 150 have one or more hostcomputers 111, 151, a communication network within each site 112, 152,storage controllers 113, 153, and a communication network 115, betweenthe sites. The host computers 111, 151, store and retrieve data withrespect to the storage controllers 113, 153, using the sitecommunication network 112, 152. The site communication network(s) 112,152 may be implemented using a fiber channel storage area network (FCSAN). Data is transferred between the primary site 110 and secondarysite 150 using communication network 115 through primary backupappliance 114 and secondary backup appliance 160. A secondary copy ofthe data from the primary site 110 is transferred to and maintained atthe secondary site 150. In the event of a failure at the primary site110 processing may be continued at secondary site 150. Because thephysical distance may be relatively large between the primary site 110and secondary site 150, the communication network 115 is typicallyslower than the communication network within each site 112, 152. Becauseof the relatively slow communication network 115 between the sites,consistent transaction sets are sent from primary site 110 to thesecondary site 150 to ensure a point in time consistency between thesites. Consistent transaction sets are described in application entitled“Method, System and Article of Manufacture for Creating a ConsistentCopy”, application No. 10,339,957, filed on Jan. 9, 2003 of which ishereby incorporated by reference in its entirety. At the secondary site150 the consistent transaction set is received and then transferred tovarious data storage devices for permanent storage.

FIG. 2 is a block diagrammatic representation of a portion of thecomponents of FIG. 1. At the primary site 110, host computer(s) 201communicates with storage management device 208 using communicationline(s) 202. The storage management device(s) 208 may comprise anystorage management system known in the art, such as a storagecontroller, server, enterprise storage server, etc. Primary backupappliance 114 is comprised of peer node A 204, peer node B 205 andcommunication line(s) 206. Primary backup appliance 114 may have more orless components than shown in FIG. 2. Storage management device(s) 208communicates with peer node A 204 and peer node B 205 usingcommunication line(s) 203. Host computer(s) 201 may alternativelycommunicate directly with peer node A 204 and peer node B 205 usingcommunication lines(s) 219. Herein references to peer node(s), peercomputer(s), and peer(s) all refer to the same device(s). Peer node A204 and peer node B 205 communicate with each other using communicationline(s) 206. Communication lines 202, 203 and 206 may be implementedusing any network or connection technology known in the art, such as aLocal Area Network (LAN), Wide Area Network (WAN), Storage Area Network(SAN), the Internet, an Intranet, etc. Communication between any of thecomponents may be in the form of executable instructions, requests foraction, data transfers, status, etc.

At the secondary site 150 host computer(s) 211 communicates with storagemanagement device 218 using communication line(s) 212. The storagemanagement device(s) 218 may comprise any storage management systemknown in the art, such as a storage controller, server, enterprisestorage server, etc. Secondary backup appliance 160 is comprised of peernode 1 214, peer node 2 215 and communication line(s) 216. Secondarybackup appliance 160 may have more or less components than shown in FIG.2. Storage management device(s) 218 communicates with peer node 1 214and peer node 2 215 using communication lines 213. Host computer(s) 211may alternatively communicate directly with peer node 1 214 and peernode 2 215 using communication line(s) 220. Peer node 1 214 and peernode 2 215 communicate with each other using communication lines 216.Communication lines 212, 213 and 216 may be implemented using anynetwork or connection technology known in the art, such as a Local AreaNetwork (LAN), Wide Area Network (WAN), Storage Area Network (SAN), theInternet, an Intranet, etc. The communication may be one or more pathsbetween the components and not limited to the number of paths shown inFIG. 2. Communication between any of the components may be in the formof executable instructions, requests for action, data transfers, status,etc.

Primary site 110 and secondary 150 site communicate with each otherusing communication lines 207. Communication lines 207 may exist over arelatively large physical distance compared to communication lines 202,203, 206, 212, 213 and 216. Because of the physical separation of theprimary 210 and secondary 220 locations, the transfer rate or bandwidthof communication lines 207 may be relatively slow compared tocommunication lines 202, 203, 206, 212, 213 and 216. Communication lines207 may be implemented using any connection technology known in the artsuch as the Internet, an Intranet, etc.

For the present invention, primary site host computer(s) 201 sends datafor storage to storage management device 208 using communication line(s)202. The storage management device 208 transfers this data to primarybackup appliance 114 to create one or more backup copies of the data ata remote site. Alternatively, primary site host computer(s) 201 sendsdata directly to primary backup appliance 114 using communicationline(s) 219 and then sends the same data to storage management device208 using communication line(s) 202. Alternatively, primary site hostcomputer(s) 201 sends data to storage management device 208 that passesthrough an intelligent switch that forwards a copy of the data to bothprimary backup appliance 114 and storage management device 208. The datais grouped into a consistent transaction set by peer node 1 204 and peernode 2 205 as it arrives from either storage management device 208 overcommunication lines 203, primary site host computer(s) 201, or anintelligent switch. Upon accumulating an entire consistent transactiondata set, peer node A 204 and peer node B 205 transfer the consistenttransaction set to peer node 1 214 and peer node 2 215 at the secondarysite 150 using communication lines 207. Peer node 1 214 and peer node 2215 transfer the entire consistent transaction set to storage managementdevice 218 for storage using communication lines 213. Host computer(s)211 may retrieve data from storage management device 218 usingcommunication line(s) 212.

FIG. 3 shows flowchart 300 detailing the operation of the system tobalance the output transfer load for peer node 1 214 and peer node 2 215as they transfer data to one or more storage devices associated withstorage management device(s) 218. Referring to FIG. 3, at step 302 peernode 1 214 and peer node 2 215 receive a data set. The data set receivedmay be a consistent transactions set or other type of data set forstorage on one or more storage devices. The data set is composed of aplurality of data transfers. Each data transfer is an equal size blockof data. The number of data transfers may vary for each data setreceived. The data transfers are initially divided between peer node 1214 and peer node 2 215 resulting in each peer having responsibility fordata transfers. Both peer node 1 214 and peer node 2 215 receive all ofthe data transfers in the set, either from the primary site or theymirror the data to each other so that they both have the entire set ofdata. The present invention operates by managing the assignments of datatransfers for each peer node. No data is transferred between the peersas the assignments change. There are many methods that could be used todo the initial assignments of the data to each peer node. For example,the data transfers could be divided equally between peer node 1 214 andpeer node 2 215 based upon the size of each data transfer.

After the initial division of the data transfers between the two peers,each peer will have assigned responsibility for a number of datatransfers. Peer node 1 214 is assigned responsibility for transferring afirst number of data transfers of the data set to one or more storagedevices. Peer node 2 215 is assigned responsibility for transferring asecond number of data transfers of the data set to one or more storagedevices. The assigned responsibility for the data transfers will hereinbe referred to as assigning the data transfers to the particular peer.Assignment of the data transfers to a peer for the present inventionmeans that the peer will take all steps necessary to execute theassigned data transfers. At step 304 peer node 1 214 and peer node 2 215begin to execute the data transfers by simultaneously transferring datato the storage devices. At step 306 the progress of peer node 1 214 andpeer node 2 215 is examined to determine if one of the peers hascompleted transferring data to the storage devices. If peer node 1 214and peer node 2 215 finish transferring data for the data set atapproximately the same time then control flows to the end at step 345.If peer node 1 214 finishes transferring data before peer node 2 215then at step 306 control flows to step 311. If peer node 2 215 finishestransferring data before peer node 1 214 then at step 306 control flowsto step 310. An explanation of the execution of step 311 and the stepsthat follow step 311 will be given first followed by an explanation ofthe execution of step 310 and the steps that follow step 310.

At step 311 peer node 1 214 and peer node 2 215 communicate with eachother to determine if peer node 2 215 needs assistance to transfer aportion of the second number of data transfers of the data set. Oneimplementation of step 311 is detailed by flowchart 400 shown in FIG. 4.At step 402 the first and second peer ratios are determined. The firstand second peer ratios determine the number of data transfers that willbe offloaded to the assisting peer by the peer requesting assistance andare explained in greater detail below. A determination of the secondpeer ratio is necessary to determine at step 311, if peer node 2 215needs assistance. The first and second peer ratios are determined atstep 402 assuming that peer node 2 215 needs assistance, however, thefirst and second peer ratios are not actually adjusted until step 317(explained below) under the condition that the result of step 311 isthat peer node 2 215 needs assistance. If the result of step 311 is thatpeer node 2 215 does not need assistance then the first and second peerratios determined at step 402 are discarded and the values of the firstand second peer ratios previous to the execution of step 402 areretained for further use. If the result of step 311 is that peer node 2215 needs assistance then the first and second peer ratios determined atstep 402 are used at step 317 to adjust the previous values of the firstand second peer ratios.

One implementation of step 402 to determine the first and second peerratios is detailed by flowchart 600 shown in FIG. 6. If this is thefirst execution of step 306 for this data set then step 602 transferscontrol to step 614, resulting in no change to the first or second peerratios. The first and second peer ratios are not changed if this is thefirst execution of step 306 for this data set because the ratios areeither at an initial value or at a value as the result of previousadjustments from the operation of the present invention. The second peerratio and the first peer ratio are only changed as a result of eitherpeer node 1 214 or peer node 2 215 accepting assistance with datatransfers on a previous execution of steps 310 or 311 for the presentdata set that is being transferred to the storage devices. The presentinvention uses the previous values for second peer ratio and the firstpeer ratio for the first instance of either peer needing assistance withdata transfers for the present data set. Each time a new data set isreceived the present invention begins operation at step 301.

After execution of step 614, step 640 is executed resulting in returningback to execution of step 403 of flowchart 400 shown in FIG. 4. If thisis not the first execution of step 306 for this data set, then step 602transfers control to step 605, where a determination of which peerneeded assistance after execution of the steps that follow step 306(FIG. 3) for the present data set is made. If at the previous executionof the steps that follow step 306 for the present data set, peer node 2215 needed assistance, then step 610 transfers control to step 621. Atstep 621 the second peer ratio is increased resulting in a largerportion of the second number of transfers being assigned to peer node 1214 when step 313 is executed (explained below). The second peer ratiois increased or decreased by a second increment value. The secondincrement is optimized to have a quick response to changing conditionsand also to provide a stable system. After execution of step 621, step640 is executed resulting in returning back to execution of step 403 offlowchart 400 shown in FIG. 4.

If at the previous execution of the steps that follow step 306 for thepresent data set, peer node 2 215 did not need assistance, then step 610transfers control to step 612. If at step 612 it is determined that theprevious execution of the steps that follow step 306 for the presentdata set, peer node 1 214 needed assistance, then step 612 transferscontrol to step 615. At step 615 the first peer ratio is decreasedresulting in a smaller portion of the first number of transfers beingassigned to peer node 2 215 the next time step 312 (explained below) isexecuted. After execution of step 615, step 640 is executed resulting inreturning back to execution of step 403 of flowchart 400 shown in FIG.4.

If at step 612 it is determined that the previous execution of the stepsthat follow step 306 for the present data set, peer node 1 214 did notneed assistance, then step 612 transfers control to step 614, resultingin no change to the second peer ratio. After execution of step 614, step640 is executed resulting in returning back to execution of step 403 offlowchart 400 shown in FIG. 4.

At step 403 a calculation of a portion of the second number of transfersis executed using the results of step 402. The portion of the secondnumber of transfers is equal to a second peer ratio multiplied by theremaining second number of transfers. The remaining second number oftransfers is the difference between the second number of transfers thatpeer node 2 215 originally had responsibility for offloading and thesecond number of transfers that peer node 2 215 has already transferredto the storage devices. The remaining second number of transfers is apositive number. The second peer ratio is the ratio of the portion ofremaining second number of transfers to the remaining second number oftransfers. The second peer ratio is dynamically adjusted during theoperation of the present invention and is described in more detailbelow. A first peer ratio that functions with peer node 1 214, in asimilar manner as the second peer ratio functions with peer node 2 215is described below when the execution of step 310 and the steps thatfollow step 310 are explained.

At step 410 the portion of the second number of transfers is compared toa second peer minimum. The second peer minimum is the minimum number oftransfers necessary for peer node 1 214 to assist peer node 2 215 withdata transfers. The second peer minimum is necessary to prevent peernode 2 215 from sending data transfers to peer node 1 214 if the secondnumber of transfers is small enough that by the time peer node 1 214would be able to complete the transfers, peer node 2 215 could havecompleted the transfers. The second peer minimum is determined by anexamination of the network configuration and the latency of thecommunications between the peer computers. The second peer minimum mustbe large enough for it to be advantageous for peer node 1 214 to assistpeer node 2 215 with data transfers after accounting for the overhead ofthe communications between the peers and other delays necessary tocomplete the entire operation. A utility program that examines thecurrent network conditions and estimates the delays that exist tocomplete the transfers could determine the second peer minimum.Alternatively, the second peer minimum may be set to a value thatdepends upon the portion of the second number of transfers by either afixed relationship such as a specified percentage or anotherrelationship that considers network conditions. In any implementation itis expected that the second peer minimum may vary dynamically.

If at step 410 the portion of the second number of transfers is lessthan or equal to the second peer minimum then step 427 is executed. Atstep 427 peer node 2 215 sends a “peer node 2 215 does not needassistance” message to peer node 1 214 and then executes step 430. Whenpeer node 1 214 receives the “peer node 2 215 does not need assistance”message from peer node 2 215, peer node 1 214 takes no further action toassist peer node 2 215 until step 340 is executed. At step 430 thecontrol returns to flowchart 300 (FIG. 3) at step 340. Execution of step340 and the steps that follow step 340 are explained below.

If at step 410 the portion of the second number of transfers is greaterthan the second peer minimum then step 426 is executed. At step 426 peernode 2 215 sends a “peer node 2 215 needs assistance” message to peernode 1 214. This starts a process that will result in peer node 1 214being assigned the responsibility for transferring the portion of thesecond number of transfers (explained below). Step 432 is executed afterexecution of step 426. At step 432 the control returns to flowchart 300(FIG. 3) at step 313. The messages between the peers regarding the needfor assistance may consist of the text shown in the flowcharts, textdescribed in this description, other messages, coded information,numbers representing bit positions or other forms of communicationbetween electronic devices know in the art.

Execution of step 313 and the steps that follow step 313 are nowexplained. Step 313 is executed as a result of a determination at step311 that peer node 2 215 needs assistance with data transfers. At step313, peer node 1 214 is assigned responsibility for transferring theportion of the second number of transfers to the storage devices. Atstep 317 peer node 1 214 receives transfer information from peer node 2215. The transfer information includes exact information on the portionof the second number of transfers that are reassigned to peer node 1214. Peer node 1 214 receives the information specifying the portion ofthe second number of transfers and assigns the portion of the secondnumber of data transfers as the first number of data transfers so thatpeer node 1 214 operates on the data transfers in the same manner as thefirst number of data transfers that peer node 1 214 was assigned at step302. At step 317 the first and second peer ratios are adjusted accordingto the determination made at step 402. The first and second peer ratiosare adjusted as a result of the decision at step 311 that peer node 2215 needs assistance with data transfers.

At step 319 peer node 1 214 begins to transfer the data to one or morestorage devices. Peer node 2 215 continues to transfer the remainingsecond number of transfers calculated at step 403 and explained above.After execution of step 319, step 340 is executed. Execution of step 340and the steps that follow step 340 are explained below.

If peer node 2 215 finishes transferring data before peer node 1 214,the decision at step 306 results in the execution of step 310. Thedescription of the execution of step 310 and the steps that follow step310 is similar to the description of the execution of step 311 and thesteps that follow step 311. The execution of step 310 and the steps thatfollow step 310 are now explained.

At step 310 peer node 1 214 and peer node 2 215 communicate with eachother to determine if peer node 1 214 needs assistance to transfer aportion of the first number of data transfers of the data set. Oneimplementation of step 310 is detailed by flowchart 500 shown in FIG. 5.At step 502 the first and second peer ratios are determined. Adetermination of the first peer ratio is necessary to determine at step310, if peer node 1 214 needs assistance. The first and second peerratios are determined at step 502 assuming that peer node 1 214 needsassistance, however, the first and second peer ratios are not actuallyadjusted until step 316 (explained below) under the condition that theresult of step 310 is that peer node 1 214 needs assistance. If theresult of step 310 is that peer node 1 214 does not need assistance thenthe first and second peer ratios determined at step 502 are discardedand the values of the first and second peer ratios previous to theexecution of step 502 are retained for further use. If the result ofstep 310 is that peer node 1 214 needs assistance then the first andsecond peer ratios determined at step 502 are used at step 316 to adjustthe previous values of the first and second peer ratios.

One implementation of step 502 to determine the first and second peerratios is detailed by flowchart 700 shown in FIG. 7. If this is thefirst execution of step 306 for this data set then step 702 transferscontrol to step 714, resulting in no change to the first or second peerratios. The first and second peer ratios are not changed if this is thefirst execution of step 306 for this data set because the ratios areeither at an initial value or at a value as the result of previousadjustments from the operation of the present invention. The second peerratio and the first peer ratio are only changed as a result of eitherpeer node 1 214 or peer node 2 215 accepting assistance with datatransfers on a previous execution of steps 310 or 311 for the presentdata set that is being transferred to one or more storage devices. Thepresent invention uses the previous values for second peer ratio and thefirst peer ratio for the first instance of either peer needingassistance with data transfers for the present data set. Each time a newdata set is received the present invention begins operation at step 301.

After execution of step 714, step 740 is executed resulting in returningback to execution of step 503 of flowchart 500 shown in FIG. 5. If thisis not the first execution of step 306 for this data set, then step 702transfers control to step 705, where a determination of which peerneeded assistance after execution of the steps that follow step 306(FIG. 3) for the present data set is made. If at the previous executionof the steps that follow step 306 for the present data set, peer node 1245 needed assistance, then step 710 transfers control to step 721. Atstep 721 the first peer ratio is increased resulting in a larger portionof the second number of transfers being assigned to peer node 2 215 whenstep 312 is executed (explained below). The first peer ratio isincreased or decreased by a first increment value. The first incrementis optimized to have a fast response to changing conditions and also toprovide a stable system. After execution of step 721, step 740 isexecuted resulting in returning back to execution of step 503 offlowchart 500 shown in FIG. 5.

If at the previous execution of the steps that follow step 306 for thepresent data set, peer node 1 214 did not need assistance, then step 710transfers control to step 712. If at step 712 it is determined that theprevious execution of the steps that follow step 306 for the presentdata set, peer node 2 215 needed assistance, then step 712 transferscontrol to step 715. At step 715 the second peer ratio is decreasedresulting in a smaller portion of the second number of transfers beingassigned to peer node 1 214 the next time step 313 (explained above) isexecuted. After execution of step 715, step 740 is executed resulting inreturning back to execution of step 503 of flowchart 500 shown in FIG.5.

If at step 712 it is determined that the previous execution of the stepsthat follow step 306 for the present data set, peer node 2 215 did notneed assistance, then step 712 transfers control to step 714, resultingin no change to the second peer ratio. After execution of step 714, step740 is executed resulting in returning back to execution of step 503 offlowchart 500 shown in FIG. 5.

At step 503 a calculation of a portion of the first number of transfersis executed using the results of step 502. The portion of the firstnumber of transfers is equal to the first peer ratio multiplied by theremaining first number of transfers. The remaining first number oftransfers is the difference between the first number of transfers thatpeer node 1 214 originally had responsibility for offloading and thefirst number of transfers that peer node 1 214 has already transferredto the storage devices. The remaining first number of transfers is apositive number. The first peer ratio is the ratio of the portion ofremaining first number of transfers to the remaining first number oftransfers. The first peer ratio is dynamically adjusted during theoperation of the present invention and is described in detail above.

At step 510 the portion of the first number of transfers is compared toa first peer minimum. The first peer minimum is the minimum number oftransfers necessary for peer node 2 215 to assist peer node 1 214 withdata transfers. The first peer minimum is necessary to prevent peer node1 214 from sending data transfers to peer node 2 215 if the first numberof transfers is small enough that by the time peer node 2 215 would beable to complete the transfers, peer node 1 214 could have completed thetransfers. The first peer minimum is determined in a similar manner asthe second peer minimum is determined and described above. The firstpeer minimum must be large enough for it to be advantageous for peernode 2 215 to assist peer node 1 214 with data transfers afteraccounting for the overhead of the communications between the peers andother delays necessary to complete the entire operation. It is expectedthat the second peer minimum may vary dynamically.

If at step 510 the portion of the first number of transfers is less thanor equal to the first peer minimum then step 527 is executed. At step527 peer node 1 214 sends a “peer node 1 214 does not need assistance”message to peer node 2 215 and then executes step 530. When peer node 2215 receives the “peer node 1 214 does not need assistance” message frompeer node 1 214, peer node 2 215 takes no further action to assist peernode 1 214 until step 340 is executed. At step 530 the control returnsto flowchart 300 (FIG. 3) at step 340. Execution of step 340 and thesteps that follow step 340 are explained below.

If at step 510 the portion of the first number of transfers is greaterthan the first peer minimum then step 526 is executed. At step 526 peernode 1 214 sends a “peer node 1 214 needs assistance” message to peernode 2 215. This starts a process that will result in peer node 2 215being assigned the responsibility for transferring the portion of thefirst number of transfers (explained below). Step 532 is executed afterexecution of step 526. At step 532 the control returns to flowchart 300(FIG. 3) at step 312.

Execution of step 312 and the steps that follow step 312 are nowexplained. Step 312 is executed as a result of a determination at step310 that peer node 1 214 needs assistance with data transfers. At step312, peer node 2 215 is assigned responsibility for transferring theportion of the first number of transfers to the storage devices. At step316 peer node 2 215 receives transfer information from peer node 1 214.The transfer information includes exact information on the portion ofthe first number of transfers that are reassigned to peer node 2 215.Peer node 2 215 receives the information specifying the portion of thefirst number of transfers and assigns the portion of the first number ofdata transfers as the second number of data transfers so that peer node2 215 operates on the data transfers in the same manner as the secondnumber of data transfers that peer node 2 215 was assigned at step 302.At step 316 the first and second peer ratios are adjusted according tothe determination made at step 502. The first and second peer ratios areadjusted as a result of the decision at step 310 that peer node 1 214needs assistance with data transfers.

At step 318 peer node 2 215 begins to transfer the data to one or morestorage devices. Peer node 1 214 continues to transfer the remainingsecond number of transfers calculated at step 503 (explained above).After execution of step 318, step 340 is executed. Execution of step 340and the steps that follow step 340 are explained below.

Execution of step 340 results from the execution of any of steps 306,310, 311, 318, or 319. At step 340 the progress of peer node 1 214 andpeer node 2 215 is examined to determine if one both of the peers havecompleted transferring data to the storage devices. If peer node 1 214or peer node 2 215 did not finish transferring data for the data set thecontrol flows back to step 306 where the process repeats. If at step 340peer node 1 214 and peer node 2 215 have both finished transferring datafor the data set then control flows to step 345 where the process endsuntil the next data set is received

While the preferred embodiments of the present invention have beenillustrated in detail, the skilled artisan will appreciate thatmodifications and adaptations to those embodiments may be made withoutdeparting from the scope of the present invention as set forth in thefollowing claims.

1. A method for a first peer and a second peer to share a plurality ofdata transfers to one or more storage devices, said first peer and saidsecond peer each having access to said data transfers, where said methodcomprises the steps of: 1.1. said first peer transferring a first numberof data transfers to said one or more storage devices; 1.2. said secondpeer transferring a second number of data transfers to said one or morestorage devices; 1.3. in response to said first peer completing saidtransfer of said first number of data transfers to said one or morestorage devices, said first peer assisting said second peer with saidsecond number of data transfers; 1.4. in response to said second peercompleting said transfer of said second number of data transfers to saidone or more storage devices, said second peer assisting said first peerwith said first number of data transfers; and 1.5. in response to saidfirst peer and said second peer not completing all data transfers,returning to step 1.3; wherein step 1.3 further comprises the steps of:2.1. determining if said second peer needs assistance to transfer saidsecond number of data transfers to said one or more storage devices;2.2. in response to determining that said second peer needs assistanceto transfer said second number of data transfers to said one or morestorage devices; 2.2.1. assigning a portion of said second number ofdata transfers from said second peer to said first peer as said firstnumber of data transfers; 2.2.2. adjusting a first peer ratio and asecond peer ratio; and 2.2.3. said first peer transferring said portionof said second number of data transfers to said one or more storagedevices.
 2. The method of claim 1, wherein step 1.4 further comprisesthe steps of: 3.1. determining if said first peer needs assistance totransfer said first number of data transfers to said one or more storagedevices; 3.2. in response to determining that said first peer needsassistance to transfer said first number of data transfers to said oneor more storage devices: 3.2.1. adjusting a first peer ratio and asecond peer ratio; 3.2.2. assigning a portion of said first number ofdata transfers from said first peer to said second peer as said secondnumber of data transfers; and 3.2.3. said second peer transferring saidportion of said first number of data transfers to said one or morestorage devices.
 3. The method of claim 2, wherein step 3.1 furthercomprises the steps of: 5.1. determining a first peer ratio and a secondpeer ratio; 5.2. determining a portion of first number of transfers thatis equal to said first peer ratio multiplied by a remaining first numberof transfers; 5.3. in response to said portion of first number oftransfers being greater than a first peer minimum number of transfers,said first peer sending an “assistance needed” message to said secondpeer; and 5.4. in response to said portion of first number of transfersbeing less than or equal to said first peer minimum number of transfers,said first peer sending a “no assistance needed” message to said secondpeer.
 4. The method of claim 3, wherein step 5.1 further comprises: 7.1.in response to determining that said second peer assisted said firstpeer with said first number of data transfers at the previous executionof step 1.4, increasing said first peer ratio by a first increment; 7.2.in response to determining that said first peer assisted said secondpeer with said second number of data transfers at the previous executionof step 1.3, decreasing said second peer ratio by a second increment. 5.The method of claim 1, wherein step 2.1 further comprises the steps of:4.1. determining a first peer ratio and a second peer ratio; 4.2.determining a portion of second number of transfers that is equal tosaid second peer ratio multiplied by a remaining second number oftransfers; 4.3. in response to said portion of second number oftransfers being greater than a second peer minimum number of transfers,said second peer sending an “assistance needed” message to said firstpeer; and 4.4. in response to said portion of second number of transfersbeing less than or equal to said second peer minimum number oftransfers, said second peer sending a “no assistance needed” message tosaid first peer.
 6. The method of claim 5, wherein step 4.1 furthercomprises: 6.1. in response to determining that said first peer assistedsaid second peer with said second number of data transfers at theprevious execution of step 1.3, increasing said second peer ratio by asecond increment; and 6.2. in response to determining that said secondpeer assisted said first peer with said first number of data transfersat the previous execution of step 1.4, decreasing said first peer ratioby a first increment.
 7. An article of manufacture comprising a datastorage medium tangibly embodying a program of machine-readableinstructions executable by a digital processing apparatus to performmethod steps for a first peer and a second peer to share a plurality ofdata transfers to one or more storage devices, said first peer and saidsecond peer each having access to said data transfers, said method stepscomprising: 8.1. said first peer transferring a first number of datatransfers to said one or more storage devices; 8.2. said second peertransferring a second number of data transfers to said one or morestorage devices; 8.3. in response to said first peer completing saidtransfer of said first number of data transfers to said one or morestorage devices, said first peer assisting said second peer with saidsecond number of data transfers; 8.4. in response to said second peercompleting said transfer of said second number of data transfers to saidone or more storage devices, said second peer assisting said first peerwith said first number of data transfers; and 8.5. in response to saidfirst peer and said second peer not completing all data transfers,returning to step 8.3; wherein step 8.3 further comprises the steps of:9.1. determining if said second peer needs assistance to transfer saidsecond number of data transfers to said one or more storage devices;9.2. in response to determining that said second peer needs assistanceto transfer said second number of data transfers to said one or morestorage devices: 9.2.1. assigning a portion of said second number ofdata transfers from said second peer to said first peer as said firstnumber of data transfers; 9.2.2. adjusting a first peer ratio and asecond peer ratio; and 9.2.3. said first peer transferring said portionof said second number of data transfers to said one or more storagedevices.
 8. The article of manufacture of claim 7, wherein step 8.4further comprises the steps of: 10.1. determining if said first peerneeds assistance to transfer said first number of data transfers to saidone or more storage devices; 10.2. in response to determining that saidfirst peer needs assistance to transfer said first number of datatransfers to said one or more storage devices: 10.2.1. adjusting a firstpeer ratio and a second peer ratio; 10.2.2. assigning a portion of saidfirst number of data transfers from said first peer to said second peeras said second number of data transfers; and 10.2.3. said second peertransferring said portion of said first number of data transfers to saidone or more storage devices.
 9. The article of manufacture of claim 8,wherein step 10.1 further comprises the steps of: 12.1. determining afirst peer ratio and a second peer ratio; 12.2. determining a portion offirst number of transfers that is equal to said first peer ratiomultiplied by a remaining first number of transfers; 12.3. in responseto said portion of first number of transfers being greater than a firstpeer minimum number of transfers, said first peer sending an “assistanceneeded” message to said second peer; and 12.4. in response to saidportion of first number of transfers being less than or equal to saidfirst peer minimum number of transfers, said first peer sending a “noassistance needed” message to said second peer.
 10. The article ofmanufacture of claim 9, wherein step 12.1 further comprises the stepsof: 14.1. in response to determining that said second peer assisted saidfirst peer with said first number of data transfers at the previousexecution of step 8.4, increasing said first peer ratio by a firstincrement; 14.2. in response to determining that said first peerassisted said second peer with said second number of data transfers atthe previous execution of step 8.3, decreasing said second peer ratio bya second increment.
 11. The article of manufacture of claim 7, whereinstep 9.1 further comprises the steps of: 11.1. determining a first peerratio and a second peer ratio; 11.2. determining a portion of secondnumber of transfers that is equal to said second peer ratio multipliedby a remaining second number of transfers; 11.3. in response to saidportion of second number of transfers being greater than a second peerminimum number of transfers, said second peer sending an “assistanceneeded” message to said first peer; and 11.4. in response to saidportion of second number of transfers being less than or equal to saidsecond peer minimum number of transfers, said second peer sending a “noassistance needed” message to said first peer.
 12. The article ofmanufacture of claim 11, wherein step 11.3 further comprises the stepsof: 13.1. in response to determining that said first peer assisted saidsecond peer with said second number of data transfers at the previousexecution of step 8.3, increasing said second peer ratio by a secondincrement; and 13.2. in response to determining that said second peerassisted said first peer with said first number of data transfers at theprevious execution of step 8.4, decreasing said first peer ratio by afirst increment.
 13. A data storage system comprising: one or morestorage devices; a storage management device for providing access tosaid one or more storage devices; a first peer for transferring data tosaid one or more storage devices; a second peer for transferring data tosaid one or more storage devices, wherein said first peer and saidsecond peer are programmed to perform method steps for said first peerand said second peer to share a plurality of data transfers to said oneor more storage devices, said first peer and said second peer eachhaving access to said data transfers, comprising the steps of: 15.1.said first peer transferring a first number of data transfers to saidone or more storage devices; 15.2. said second peer transferring asecond number of data transfers to said one or more storage devices;15.3. in response to said first peer completing said transfer of saidfirst number of data transfers to said one or more storage devices, saidfirst peer assisting said second peer with said second number of datatransfers; 15.4. in response to said second peer completing saidtransfer of said second number of data transfers to said one or morestorage devices, said second peer assisting said first peer with saidfirst number of data transfers; and 15.5. in response to said first peerand said second peer not completing all data transfers, returning tostep 15.3; wherein step 15.3 further comprises the steps of: 16.1.determining if said second peer needs assistance to transfer said secondnumber of data transfers to said one or more storage devices; 16.2. inresponse to determining that said second peer needs assistance totransfer said second number of data transfers to said one or morestorage devices: 16.2.1. assigning a portion of said second number ofdata transfers from said second peer to said first peer as said firstnumber of data transfers; 16.2.2. adjusting a first peer ratio and asecond peer ratio; and 16.2.3. said first peer transferring said portionof said second number of data transfers to said one or more storagedevices.
 14. The system of claim 13, wherein step 15.4 further comprisesthe steps of: 17.1. determining if said first peer needs assistance totransfer said first number of data transfers to said one or more storagedevices; 17.2. in response to determining that said first peer needsassistance to transfer said first number of data transfers to said oneor more storage devices: 17.2.1. adjusting a first peer ratio and asecond peer ratio; 17.2.2. assigning a portion of said first number ofdata transfers from said first peer to said second peer as said secondnumber of data transfers; and 17.2.3. said second peer transferring saidportion of said first number of data transfers to said one or morestorage devices.
 15. The system of claim 14, wherein step 17.1 furthercomprises the steps of: 19.1. determining a first peer ratio and asecond peer ratio; 19.2. determining a portion of first number oftransfers that is equal to said first peer ratio multiplied by aremaining first number of transfers; 19.3. in response to said portionof first number of transfers being greater than a first peer minimumnumber of transfers, said first peer sending an “assistance needed”message to said second peer; and 19.4. in response to said portion offirst number of transfers being less than or equal to said first peerminimum number of transfers, said first peer sending a “no assistanceneeded” message to said second peer.
 16. The system of claim 15, whereinstep 19.1 further comprises: 21.1. in response to determining that saidsecond peer assisted said first peer with said first number of datatransfers at the previous execution of step 15.4, increasing said firstpeer ratio by a first increment; 21.2. in response to determining thatsaid first peer assisted said second peer with said second number ofdata transfers at the previous execution of step 15.3, decreasing saidsecond peer ratio by a second increment.
 17. The system of claim 13,wherein step 16.1 further comprises the steps of: 18.1. determining afirst peer ratio and a second peer ratio; 18.2. determining a portion ofsecond number of transfers that is equal to said second peer ratiomultiplied by a remaining second number of transfers; 18.3. in responseto said portion of second number of transfers being greater than asecond peer minimum number of transfers, said second peer sending an“assistance needed” message to said first peer; and 18.4. in response tosaid portion of second number of transfers being less than or equal tosaid second peer minimum number of transfers, said second peer sending a“no assistance needed” message to said first peer.
 18. The system ofclaim 17, wherein step 18.1 further comprises: 20.1. in response todetermining that said first peer assisted said second peer with saidsecond number of data transfers at the previous execution of step 15.3,increasing said second peer ratio by a second increment; and 20.2. inresponse to determining that said second peer assisted said first peerwith said first number of data transfers at the previous execution ofstep 15.4, decreasing said first peer ratio by a first increment.